
#include <iostream>

using namespace std;



class Integer{
public:
	Integer() : m_i(0){}
private:
	int m_i;
	friend ostream& operator<<(ostream& os, Integer const& that);
};

ostream& operator<<(ostream& os, Integer const& that){
	return os << that.m_i;
}

template<typename T> void Func(){
	T t = T();	// 0
	cout << "t = " << t << endl;
}


int main( ){
	Func<int>();
	Func<double>();
	Func<Integer>();

	return 0;
}
